﻿using System;
//Para usar Adox
//En el Explorador de soluciones , haga clic con el botón secundario del mouse en el nodo referencias en el explorador de soluciones
//y seleccione Agregar referencia .
//En la ficha COM , seleccione Microsoft ADO Ext. 2.7 for DDL and Security , haga clic en seleccionar para agregarlo 
//a los Componentes seleccionados y, a continuación, haga clic en Aceptar .
using ADOX;
using System.Data.OleDb;


namespace GestorMultimedia
{
    public sealed class TBaseDatos : TObjeto
    {

        public TBaseDatos()
        {
            ResultOp = true;
            //ObjLiberado = false;
        }

        /*~TBaseDatos()
        {
            ObjLiberado = true;
            this.Dispose();
        }*/

        public override void Iniciar()
        {
        }

        /*public override void Dispose()
        {
            //Aqui se liberan los recursos

            if (ObjLiberado == false)//si no es el destructor el que ha invocado al dipose
                GC.SuppressFinalize(this);//se indica al GC que no es necesario llamar al destructor de este objeto

        }*/

        public void CrearParaOleDb(string ruta) //Crea la base de datos para un proveedor de datos OleDb
        {
            OleDbConnection Conexion = null;
            OleDbCommand comando = null;

            Conexion = new OleDbConnection();
            Conexion.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ruta; ;
            comando = new OleDbCommand();

            comando.Connection = Conexion;
            Conexion.Open();

            #region Tablas generales

            //NACIONALIDADES
            comando.CommandText = "CREATE TABLE NACIONALIDADES(IdNacionalidad Int,Pais Char(255),Gentilicio Char(255),Denominacion Char(255))";
            comando.ExecuteNonQuery();

            //GENEROS DE CINE
            comando.CommandText = "CREATE TABLE GENEROS_CINE(IdGeneroCine Int,Denominacion Char(255),Descripcion LongText)";
            comando.ExecuteNonQuery();

            //ARTISTAS
            comando.CommandText = "CREATE TABLE ARTISTAS(IdArtista Int,Nombre Char(255),Apellido1 Char(255),Apellido2 Char(255),Sexo Logical,EsDirector Logical,EsActor Logical,EsCantante Logical,Nacimiento datetime)";
            comando.ExecuteNonQuery();

            //ARTISTAS_Nacionalidades
            comando.CommandText = "CREATE TABLE ARTISTAS_NACIONALIDADES(IdArtista Int,IdNacionalidad Int)";
            comando.ExecuteNonQuery();

            //EMPRESAS
            comando.CommandText = "CREATE TABLE EMPRESAS(IdEmpresa Int,Denominacion Char(255),Descripcion LongText,EsProductora Logical,EsDistribuidora Logical,EsEstudio Logical)";
            comando.ExecuteNonQuery();

            //EMPRESAS_Nacionalidades
            comando.CommandText = "CREATE TABLE EMPRESAS_NACIONALIDADES(IdEmpresa Int,IdNacionalidad Int)";
            comando.ExecuteNonQuery();

            #endregion

            #region Peliculas

            //PELICULAS
            comando.CommandText = "CREATE TABLE P_PELICULAS(IdPelicula Int,Titulo Char(255),TOriginal Char(255),Anno Int,Remake Int,Saga Int,Ficcion Logical,Animacion Logical,Comentarios LongText,Sinopsis LongText)";
            comando.ExecuteNonQuery();

            //PELICULAS--SAGAS
            comando.CommandText = "CREATE TABLE P_SAGAS(IdSaga Int,Titulo Char(255),Descripcion LongText)";
            comando.ExecuteNonQuery();

            //PELICULAS--Nacionalidades 
            comando.CommandText = "CREATE TABLE P_NACIONALIDADES(IdPelicula Int,IdNacionalidad Int)";
            comando.ExecuteNonQuery();

            //PELICULAS--Generos
            comando.CommandText = "CREATE TABLE P_GENEROS_CINE(IdPelicula Int,IdNacionalidad Int)";
            comando.ExecuteNonQuery();

            //PELICULAS--Directores
            comando.CommandText = "CREATE TABLE P_DIRECTORES(IdPelicula Int,IdArtista Int)";
            comando.ExecuteNonQuery();

            //PELICULAS--Actores
            comando.CommandText = "CREATE TABLE P_ACTORES(IdPelicula Int,IdArtista Int)";
            comando.ExecuteNonQuery();

            #endregion


            //PELICULAS-->VERSIONES
            //comando.CommandText = "CREATE TABLE P_VERSIONES(IdPelicula Int,IdVersionPelicula Int,Titulo Char(255),Duracion Int,IdCodecS Int,IdCodecV Int,IdFormatoLV Int,Comentarios LongText)";
            //comando.ExecuteNonQuery();

            //PELICULAS--VERSIONES--voces 
            //comando.CommandText = "CREATE TABLE P_VOCES(IdPelicula Int,IdNacionalidad Int)";
            //comando.ExecuteNonQuery();

            //PELICULAS--VERSIONES--SubTitulos
            //comando.CommandText = "CREATE TABLE P_SUBTITULOS(IdPelicula Int,IdNacionalidad Int)";
            //comando.ExecuteNonQuery();

            //PELICULAS-->VERSIONES-->COPIAS
            //comando.CommandText = "CREATE TABLE P_COPIAS(IdVersionPelicula Int,IdCopiaPelicula Int)";
            //comando.ExecuteNonQuery();

            //PELICULAS-->VERSIONES-->COPIAS-->PARTES
            //comando.CommandText = "CREATE TABLE P_PARTES(IdCopiaPelicula Int,IdPartePelicula Int,Fichero Char(255),Extension Char(255),Tamano Int,Comentarios LongText)";
            //comando.ExecuteNonQuery();

            //PELICULAS-->VERSIONES-->COPIAS-->PARTES-->Partes_Depositos
            //comando.CommandText = "CREATE TABLE P_DEPOSITOS(IdPartePelicula Int,IdDeposito Int)";
            //comando.ExecuteNonQuery();

            //DOCUMENTALES
            //comando.CommandText = "CREATE TABLE D_DOCUMENTALES(IdDocumental Int,Titulo Char(255),TOriginal Char(255),Anno Int,Animacion Logical,Comentarios LongText,Sinopsis LongText)";
            //comando.ExecuteNonQuery();

            //SERIES
            //comando.CommandText = "CREATE TABLE S_SERIES(IdSerie Int,Titulo Char(255),TOriginal Char(255),Anno Int,Temporadas Int,Completa Logical,Ficcion Logical,Animacion Logical,Comentarios LongText,Sinopsis LongText)";
            //comando.ExecuteNonQuery();

            //MUSICA
            //comando.CommandText = "CREATE TABLE M_CANCIONES(IdCancion Int,Titulo Char(255),Anno Int,Comentarios LongText)";
            //comando.ExecuteNonQuery();

            //JUEGOS
            //comando.CommandText = "CREATE TABLE J_JUEGOS(IdJuego Int,Titulo Char(255),Anno Int,Descripcion LongText)";
            //comando.ExecuteNonQuery();

            

            //SOPORTES FISICOS
            //comando.CommandText = "CREATE TABLE SOPORTES_FISICOS(IdSoporteFisico Int,Denominacion Char(255),Descripcion LongText)";
            //comando.ExecuteNonQuery();

            //CODEC'S DE VIDEO
            //comando.CommandText = "CREATE TABLE CODECS_VIDEO(IdCodecV Int,Denominacion Char(255),Descripcion LongText)";
            //comando.ExecuteNonQuery();

            //CODEC'S DE SONIDO
            //comando.CommandText = "CREATE TABLE CODECS_SONIDO(IdCodecS Int,Denominacion Char(255),Descripcion LongText)";
            //comando.ExecuteNonQuery();

            //FORMATOS LOGICOS DE VIDEO
            //comando.CommandText = "CREATE TABLE FORMATOS_LOGICOS_VIDEO(IdFormatoLV Int,Denominacion Char(255),Descripcion LongText)";
            //comando.ExecuteNonQuery();

            //FORMATOS LOGICOS DE SONIDO
            //comando.CommandText = "CREATE TABLE FORMATOS_LOGICOS_SONIDO(IdFormatoLS Int,Denominacion Char(255),Descripcion LongText)";
            //comando.ExecuteNonQuery();

            //DEPOSITOS
            //comando.CommandText = "CREATE TABLE DEPOSITOS(IdDeposito Int,IdSoporteFisico Int,Denominacion Char(255),Original Logical)";
            //comando.ExecuteNonQuery();

            //AMBIENTACIONES
            //comando.CommandText = "CREATE TABLE AMBIENTACIONES(IdAmbientacion Int,Denominacion Char(255),Descripcion LongText)";
            //comando.ExecuteNonQuery();


            Conexion.Close();
            comando.Dispose();
            comando = null;
            Conexion.Dispose();
            Conexion = null;
        }

        


    }
}
